# !/usr/bin/python
# -*- coding: utf-8 -*-

"""
@contact: 微信 1257309054
@file: select.py
@time: 2022/7/24 12:04
@author: LDC
"""
'''
2、选择排序
基本思想：第1趟，在待排序记录r1 ~ r[n]中选出最小的记录，
将它与r1交换；第2趟，在待排序记录r2 ~ r[n]中选出最小的记录，
将它与r2交换；以此类推，第i趟在待排序记录r[i] ~ r[n]中选出最小的记录，
将它与r[i]交换，使有序序列不断增长直到全部排序完毕。
原地排序，不需要返回值。
'''
import random
import time


def selectSort(list1):
    for i in range(len(list1) - 1):
        min = i  # 已排序好的序列的最后一个元素的下标i
        for j in range(i + 1, len(list1)):
            if list1[min] > list1[j]:  # 找出未排序的序列中最小的元素的下标min
                min = j
        if min != i:  # 对应的元素值交换
            list1[i], list1[min] = list1[min], list1[i]


if __name__ == '__main__':
    list1 = [random.randint(1, 999) for i in range(10000)]
    list11 = list1.copy()
    print(id(list1), id(list11))
    start1 = time.perf_counter()
    selectSort(list1)
    end1 = time.perf_counter()
    print("选择排序      ", end1 - start1)

    start2 = time.perf_counter()
    list4 = sorted(list11)
    end2 = time.perf_counter()
    print("函数sorted排序", end2 - start2)
    print("排序结果", list1 == list4)
